package cc.yaomm.common.basic.base;

/**
 * <p>@Description : 枚举基类. 所有的枚举, 必须实现该接口 </p>
 * <p>@Author : QiLin.Xing </p>
 * <p>@Date : 2021/6/9 9:12 </p>
 */
public interface SuperEnum<E extends Enum<?>, T> {

    /**
     * 值.
     */
    T getValue();

    /**
     * 显示值.
     */
    String getName();

    /**
     * 枚举集合
     *
     * @return
     */
    E[] enums();

    /**
     * 根据值获取枚举
     *
     * @param value
     * @return
     */
    default E get(T value) {
        for (E e : this.enums()) {
            if (((SuperEnum) e).getValue().equals(value)) {
                return e;
            }
        }
        return null;
    }
}